package mine.code.day.year2021.month09;

import org.junit.Test;

/**
 * 一个班级里有n个学生，编号为 0到 n  1。每个学生会依次回答问题，编号为 0的学生先回答，然后是编号为 1的学生，以此类推，直到编号为 n  1的学生，然后老师会重复这个过程，重新从编号为 0的学生开始回答问题。
 * <p>
 * 给你一个长度为 n且下标从 0开始的整数数组chalk和一个整数k。一开始粉笔盒里总共有k支粉笔。当编号为i的学生回答问题时，他会消耗 chalk[i]支粉笔。如果剩余粉笔数量 严格小于chalk[i]，那么学生 i需要 补充粉笔。
 * <p>
 * 请你返回需要 补充粉笔的学生 编号。
 * <p>
 * 示例 1：
 * <p>
 * 输入：chalk = [5,1,5], k = 22
 * <p>
 * 输出：0
 * <p>
 * 解释：学生消耗粉笔情况如下：
 * <p>
 * 编号为 0 的学生使用 5 支粉笔，然后 k = 17 。
 * <p>
 * 编号为 1 的学生使用 1 支粉笔，然后 k = 16 。
 * <p>
 * 编号为 2 的学生使用 5 支粉笔，然后 k = 11 。
 * <p>
 * 编号为 0 的学生使用 5 支粉笔，然后 k = 6 。
 * <p>
 * 编号为 1 的学生使用 1 支粉笔，然后 k = 5 。
 * <p>
 * 编号为 2 的学生使用 5 支粉笔，然后 k = 0 。
 * <p>
 * 编号为 0 的学生没有足够的粉笔，所以他需要补充粉笔。
 * <p>
 * 示例 2：
 * <p>
 * 输入：chalk = [3,4,1,2], k = 25
 * 输出：1
 * <p>
 * 解释：学生消耗粉笔情况如下：
 * <p>
 * 编号为 0 的学生使用 3 支粉笔，然后 k = 22 。
 * <p>
 * 编号为 1 的学生使用 4 支粉笔，然后 k = 18 。
 * <p>
 * 编号为 2 的学生使用 1 支粉笔，然后 k = 17 。
 * <p>
 * 编号为 3 的学生使用 2 支粉笔，然后 k = 15 。
 * <p>
 * 编号为 0 的学生使用 3 支粉笔，然后 k = 12 。
 * <p>
 * 编号为 1 的学生使用 4 支粉笔，然后 k = 8 。
 * <p>
 * 编号为 2 的学生使用 1 支粉笔，然后 k = 7 。
 * <p>
 * 编号为 3 的学生使用 2 支粉笔，然后 k = 5 。
 * <p>
 * 编号为 0 的学生使用 3 支粉笔，然后 k = 2 。
 * <p>
 * 编号为 1 的学生没有足够的粉笔，所以他需要补充粉笔。
 *
 * @author caijinnan
 */
public class Day10_找到需要补充粉笔的学生编号 {

    @Test
    public void run() {
//        int[] chalk = {3, 4, 1, 2};
//        int k = 25;
//        int[] chalk = {5,1,5};
//        int k = 22;
        int[] chalk = {30, 76, 46, 74, 34, 12, 1, 82, 25, 28, 63, 29, 60, 76, 98, 20, 40, 32, 76, 26, 71};
        int k = 346237330;
        System.out.println(chalkReplacer(chalk, k));
    }

    int mod = 100000;

    public int chalkReplacer(int[] chalk, int k) {
        long sum = 0;
        for (int i : chalk) {
            sum += i;
        }
        long temp = k % sum;
        for (int i = 0; i < chalk.length; i++) {
            temp -= chalk[i];
            if(temp<0){
                return i;
            }
        }
        return -1;
    }

}
